Key distribution centers allow users to upload keys to a repository so that others may access those keys to send the users encrypted messages. For example, a first user generates an asymmetric key pair and uploads the public key to a key distribution center. A second user subsequently requests the first user's public key from the key distribution center. After authenticating the second user, the key distribution center provides the second user with the first user's public key. Upon receiving the first user's public key, the second user encrypts data with the first user's public key received from the key distribution center and transmits the encrypted data to the first user. The first user receives the encrypted data and decrypts it with the first user's private key to access the data. Accordingly, key distribution centers play an important role in facilitating secure communications between the first user and the second user.
However, key distribution centers suffer from a technological problem in that the key distribution center represent a single source of failure. For example, if the key distribution center is unavailable, the first and second user no longer have the ability to exchange encrypted communications. In another example, the key distribution center may be compromised, which could allow a malicious user to conduct a man-in-the-middle attack and eavesdrop on the communications between the first and second users. Thus, there is the need for a technical solution that provides users with the ability to exchange encrypted communications without having to obtain a key from a key distribution center.